package co.crossoft.service;

import co.crossoft.base.annotation.Param;
import co.crossoft.base.common.JsonResult;

import java.util.ArrayList;

/**
 * Created by Snow on 8/22/2017.
 */
public interface ExposeWorkCenterService {

    /**
     * 根据工作中心模糊查询工作中心数据
     * @param plant 工厂
     * @param workCenter 工作中心
     * @return
     */
    public JsonResult selectByWorkCenter(@Param("plant") String plant,
                                         @Param("workCenter") String workCenter );

    /**
     * @param handle 工作中心主键
     * @return
     */
    public JsonResult deleteByPrimaryKey( @Param("handle") String handle);

    /**
     * 更新或新增工作中心数据
     * @param plant 工厂
     * @param workCenter 工作中心
     * @param description 描述
     * @param statusFk 状态FK
     * @param canBeReleasedTo 车间作业控制下达至此工作中心 Y:N
     * @param wcCategory 工作中心类别
     * @param wcType 工作中心类型
     * @param assignmentEnforcement 强制分配
     * @return
     */
    public JsonResult addOrUpdateWorkCenter( @Param("plant") String plant,
                                         @Param("workCenter") String workCenter,
                                         @Param("description") String description,
                                         @Param("statusFk") String statusFk,
                                         @Param("canBeReleasedTo") String canBeReleasedTo,
                                         @Param("wcCategory") String wcCategory,
                                         @Param("wcType") String wcType,
                                         @Param("assignmentEnforcement") String assignmentEnforcement );

    /**
     * @param plant 工厂
     * @param type 类型 WORK_CENTER：工作中心 / RESOURCE：资源
     * @param name 资源或工作中心 模糊检索名称
     * @return
     */
    public JsonResult workCenterOrResourceSelect( @Param("plant") String plant,
                                         @Param("type") String type,
                                         @Param("name") String name );

    /**
     * @param handleData
     * @return
     */
    public JsonResult deleteWorkRefResource( @Param("handleData") ArrayList<String> handleData,
                                         @Param("workCenterHandle") String workCenterHandle);


    /**
     * @param sequence
     * @param resourceOrWorkcenterFk
     * @param workCenterFk
     * @param type
     * @return
     */
    public JsonResult addResourceRefWork( @Param("sequence") String sequence,
                                      @Param("resourceOrWorkcenterFk") String resourceOrWorkcenterFk,
                                      @Param("workCenterFk") String workCenterFk,
                                      @Param("type") String type );


    /**
     * @param handle
     * @return
     */
    public JsonResult selectOneworkCenterByHandle( @Param("handle") String handle);
}
